package com.wfh.ai.tool;

import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @Title: ToolManager
 * @Author wangfenghuan
 * @Package com.wfh.aigenerator.ai.tool
 * @Date 2025/8/10 19:25
 * @description:
 */
@Slf4j
@Component
public class ToolManager {
    /**
     * 工具名称到工具实例的映射
     */
    private final Map<String, BaseTool> toolMap = new ConcurrentHashMap<>();

    /**
     * 自动注入所有的工具
     */
    @Resource
    private BaseTool[] tools;

    /**
     * 初始化工具的映射
     */
    @PostConstruct
    public void initTools(){
        for (BaseTool tool : tools) {
            toolMap.put(tool.getToolName(), tool);
            log.info("注册工具: {}", tool.getToolName());
        }
        log.info("工具注册完成, 总共注册了 {} 个工具", toolMap.size());
    }

    /**
     * 根据工具的名称获取工具的实例
     * @param toolName
     * @return
     */
    public BaseTool getTool(String toolName){
        return toolMap.get(toolName);
    }

    /**
     * 获取所有的已经注册的工具的集合
     * @return
     */
    public BaseTool[] getAllTools(){
        return tools;
    }

}
